File systems manage files and other data objects stored on computer systems. File systems were originally built into the computer operating system to facilitate access to files stored locally on resident storage media. As personal computers became networked, some file storage capabilities were offloaded from individual user machines to special storage servers that stored large numbers of files on behalf of the user machines. When a file was needed, the user machine simply requested the file from the server. In this server-based architecture, the file system is extended to facilitate management of and access to files stored remotely at the storage server over a network. Today, file storage is migrating toward a distributed file system model in which files are stored on various networked computers, rather than on a central storage server.
One problem that arises in distributed file systems concerns the availability of files stored in the file system. As files are stored on various networked computers, the availability of such files becomes dependent on the availability of the various networked computers, which may not be as great as the availability of a central storage server. One solution to this problem is to store multiple copies of files on different ones of the network computers. However, this solution still leaves the problem of determining which of the network computers the copies of a particular file should be stored on.
The improving file availability in distributed file storage systems described herein solves these and other problems.